package com.studentgrowth.controller.course;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.*;
import javax.servlet.http.HttpServletRequest;

@RestController
@RequestMapping("/api/course")
public class CourseController {

    @GetMapping("/detail")
    public Map<String, Object> getCourseDetail(@RequestParam int id, HttpServletRequest request) {
        String baseUrl = getBaseUrl(request);
        Map<String, Object> course = new HashMap<>();
        switch (id) {
            case 1:
                course.put("title", "数据结构与算法");
                course.put("instructor", "李教授");
                course.put("image", baseUrl + "/images/course_ds.jpg");
                course.put("description", "本课程系统讲解数据结构与算法的基本概念、实现方法和应用场景。从基础的数组、链表到高级的树、图结构，从简单排序到高效查找，全面提升学习者的编程能力和算法思维。");
                course.put("chapters", Arrays.asList(
                        chapter("第一章：线性表", Arrays.asList(
                                lesson("1.1 线性表的基本概念", "30分钟"),
                                lesson("1.2 顺序表与链表", "40分钟"),
                                lesson("1.3 线性表的应用", "35分钟")
                        )),
                        chapter("第二章：栈与队列", Arrays.asList(
                                lesson("2.1 栈的基本操作", "35分钟"),
                                lesson("2.2 队列的基本操作", "35分钟"),
                                lesson("2.3 栈与队列的应用", "40分钟")
                        )),
                        chapter("第三章：串", Arrays.asList(
                                lesson("3.1 串的基本操作", "30分钟"),
                                lesson("3.2 串的模式匹配", "40分钟"),
                                lesson("3.3 串的应用", "35分钟")
                        )),
                        chapter("第四章：树", Arrays.asList(
                                lesson("4.1 树的基本概念", "40分钟"),
                                lesson("4.2 二叉树及其遍历", "50分钟"),
                                lesson("4.3 树的应用", "45分钟")
                        )),
                        chapter("第五章：图", Arrays.asList(
                                lesson("5.1 图的基本概念", "40分钟"),
                                lesson("5.2 图的遍历", "45分钟"),
                                lesson("5.3 最短路径与最小生成树", "50分钟")
                        )),
                        chapter("第六章：查找", Arrays.asList(
                                lesson("6.1 顺序查找与折半查找", "35分钟"),
                                lesson("6.2 平衡二叉查找树", "45分钟"),
                                lesson("6.3 哈希查找", "40分钟")
                        )),
                        chapter("第七章：排序", Arrays.asList(
                                lesson("7.1 插入排序与交换排序", "40分钟"),
                                lesson("7.2 选择排序与归并排序", "45分钟"),
                                lesson("7.3 基数排序与外部排序", "50分钟")
                        ))
                ));
                break;
            case 3:
                course.put("title", "算法设计与分析");
                course.put("instructor", "张教授");
                course.put("image", baseUrl + "/images/course_algo.jpg");
                course.put("description", "本课程深入讲解算法设计与分析的核心概念和方法，涵盖分治策略、动态规划、贪心算法等经典算法思想。通过理论讲解和实践案例，帮助学习者掌握算法设计技巧，提高解决复杂问题的能力。");
                course.put("chapters", Arrays.asList(
                        chapter("第一章：算法基础", Arrays.asList(
                                lesson("1.1 算法概述与复杂度分析", "45分钟"),
                                lesson("1.2 渐进符号与增长率", "30分钟"),
                                lesson("1.3 递归与分治策略", "50分钟")
                        )),
                        chapter("第二章：排序算法", Arrays.asList(
                                lesson("2.1 插入排序与归并排序", "40分钟"),
                                lesson("2.2 快速排序与堆排序", "45分钟"),
                                lesson("2.3 线性时间排序算法", "35分钟")
                        )),
                        chapter("第三章：查找算法", Arrays.asList(
                                lesson("3.1 顺序查找与二分查找", "35分钟"),
                                lesson("3.2 哈希查找与跳表", "40分钟"),
                                lesson("3.3 平衡树查找", "45分钟")
                        )),
                        chapter("第四章：分治与递归", Arrays.asList(
                                lesson("4.1 分治法基本思想", "40分钟"),
                                lesson("4.2 递归算法设计", "45分钟"),
                                lesson("4.3 典型分治问题", "50分钟")
                        )),
                        chapter("第五章：动态规划", Arrays.asList(
                                lesson("5.1 动态规划基本原理", "50分钟"),
                                lesson("5.2 最优子结构与重叠子问题", "45分钟"),
                                lesson("5.3 经典动态规划问题求解", "60分钟")
                        )),
                        chapter("第六章：贪心算法", Arrays.asList(
                                lesson("6.1 贪心算法基本思想", "35分钟"),
                                lesson("6.2 典型贪心问题", "40分钟"),
                                lesson("6.3 贪心与动态规划对比", "30分钟")
                        )),
                        chapter("第七章：图算法", Arrays.asList(
                                lesson("7.1 图的表示与遍历", "45分钟"),
                                lesson("7.2 最短路径算法", "50分钟"),
                                lesson("7.3 最小生成树", "40分钟")
                        ))
                ));
                break;
            case 2:
                course.put("title", "大数据算法");
                course.put("instructor", "王教授");
                course.put("image", baseUrl + "/images/course_bigdata.jpg");
                course.put("description", "本课程专注于大数据环境下的算法设计与优化，介绍分布式计算模型、并行算法设计以及大规模数据处理技术。通过实际案例分析，帮助学习者掌握处理海量数据的有效方法。");
                course.put("chapters", Arrays.asList(
                        chapter("第一章：大数据概述", Arrays.asList(
                                lesson("1.1 大数据特性与挑战", "40分钟"),
                                lesson("1.2 分布式计算模型", "45分钟"),
                                lesson("1.3 大数据处理框架", "50分钟")
                        )),
                        chapter("第二章：大数据算法基础", Arrays.asList(
                                lesson("2.1 MapReduce编程模型", "55分钟"),
                                lesson("2.2 并行算法设计", "50分钟"),
                                lesson("2.3 数据分片与负载均衡", "45分钟")
                        )),
                        chapter("第三章：大数据挖掘算法", Arrays.asList(
                                lesson("3.1 大规模机器学习", "60分钟"),
                                lesson("3.2 推荐系统算法", "55分钟"),
                                lesson("3.3 图计算与社交网络分析", "50分钟")
                        )),
                        chapter("第四章：大数据存储与检索", Arrays.asList(
                                lesson("4.1 分布式文件系统", "45分钟"),
                                lesson("4.2 NoSQL数据库", "50分钟"),
                                lesson("4.3 大数据索引与检索", "40分钟")
                        )),
                        chapter("第五章：大数据流处理", Arrays.asList(
                                lesson("5.1 流处理框架", "50分钟"),
                                lesson("5.2 实时计算与窗口", "45分钟"),
                                lesson("5.3 流式算法案例", "55分钟")
                        )),
                        chapter("第六章：大数据安全与隐私", Arrays.asList(
                                lesson("6.1 数据加密与访问控制", "40分钟"),
                                lesson("6.2 隐私保护算法", "45分钟"),
                                lesson("6.3 安全大数据分析", "50分钟")
                        )),
                        chapter("第七章：大数据应用案例", Arrays.asList(
                                lesson("7.1 金融大数据分析", "50分钟"),
                                lesson("7.2 医疗健康大数据", "55分钟"),
                                lesson("7.3 智慧城市与物联网", "60分钟")
                        ))
                ));
                break;
            case 4:
                course.put("title", "程序设计与算法");
                course.put("instructor", "刘教授");
                course.put("image", baseUrl + "/images/course_algo.jpg");
                course.put("description", "本课程结合程序设计思想与算法技巧，涵盖基础编程、数据结构、算法实现与优化，帮助学习者系统提升编程能力和算法素养。");
                course.put("chapters", Arrays.asList(
                        chapter("第一章：编程基础", Arrays.asList(
                                lesson("1.1 程序设计语言概述", "30分钟"),
                                lesson("1.2 变量与数据类型", "35分钟"),
                                lesson("1.3 控制结构与流程图", "40分钟")
                        )),
                        chapter("第二章：函数与模块化", Arrays.asList(
                                lesson("2.1 函数定义与调用", "35分钟"),
                                lesson("2.2 参数传递与作用域", "30分钟"),
                                lesson("2.3 模块化编程实践", "40分钟")
                        )),
                        chapter("第三章：数据结构基础", Arrays.asList(
                                lesson("3.1 数组与链表", "40分钟"),
                                lesson("3.2 栈与队列", "35分钟"),
                                lesson("3.3 字典与集合", "30分钟")
                        )),
                        chapter("第四章：算法实现", Arrays.asList(
                                lesson("4.1 排序算法实现", "45分钟"),
                                lesson("4.2 查找算法实现", "40分钟"),
                                lesson("4.3 算法复杂度分析", "35分钟")
                        )),
                        chapter("第五章：递归与分治", Arrays.asList(
                                lesson("5.1 递归思想与实现", "40分钟"),
                                lesson("5.2 分治策略", "45分钟"),
                                lesson("5.3 递归与迭代对比", "30分钟")
                        )),
                        chapter("第六章：算法优化", Arrays.asList(
                                lesson("6.1 时间复杂度优化", "35分钟"),
                                lesson("6.2 空间复杂度优化", "30分钟"),
                                lesson("6.3 常见优化技巧", "40分钟")
                        )),
                        chapter("第七章：综合项目实践", Arrays.asList(
                                lesson("7.1 项目需求分析", "40分钟"),
                                lesson("7.2 项目编码与调试", "50分钟"),
                                lesson("7.3 项目总结与优化", "30分钟")
                        ))
                ));
                break;
            case 5:
                course.put("title", "人工智能基础");
                course.put("instructor", "赵教授");
                course.put("image", baseUrl + "/images/course_ai.jpg");
                course.put("description", "本课程介绍人工智能的基本概念、发展历程、主要算法及应用场景，包括机器学习、深度学习、知识表示等内容。");
                course.put("chapters", Arrays.asList(
                        chapter("第一章：人工智能概述", Arrays.asList(
                                lesson("1.1 AI的定义与发展", "35分钟"),
                                lesson("1.2 主要研究方向", "30分钟"),
                                lesson("1.3 典型应用案例", "40分钟")
                        )),
                        chapter("第二章：知识表示与推理", Arrays.asList(
                                lesson("2.1 知识表示方法", "40分钟"),
                                lesson("2.2 逻辑推理基础", "35分钟"),
                                lesson("2.3 专家系统", "30分钟")
                        )),
                        chapter("第三章：搜索算法", Arrays.asList(
                                lesson("3.1 盲目搜索", "35分钟"),
                                lesson("3.2 启发式搜索", "40分钟"),
                                lesson("3.3 A*算法", "45分钟")
                        )),
                        chapter("第四章：机器学习基础", Arrays.asList(
                                lesson("4.1 监督学习", "40分钟"),
                                lesson("4.2 无监督学习", "35分钟"),
                                lesson("4.3 评估与调优", "30分钟")
                        )),
                        chapter("第五章：神经网络与深度学习", Arrays.asList(
                                lesson("5.1 感知机与多层网络", "45分钟"),
                                lesson("5.2 反向传播算法", "40分钟"),
                                lesson("5.3 卷积神经网络", "50分钟")
                        )),
                        chapter("第六章：自然语言处理", Arrays.asList(
                                lesson("6.1 语言模型", "35分钟"),
                                lesson("6.2 词向量与嵌入", "40分钟"),
                                lesson("6.3 机器翻译", "45分钟")
                        )),
                        chapter("第七章：AI应用与前沿", Arrays.asList(
                                lesson("7.1 智能推荐系统", "40分钟"),
                                lesson("7.2 计算机视觉", "45分钟"),
                                lesson("7.3 AI伦理与未来", "30分钟")
                        ))
                ));
                break;
            case 6:
                course.put("title", "深度学习原理与实践");
                course.put("instructor", "钱教授");
                course.put("image", baseUrl + "/images/course_dl.jpg");
                course.put("description", "系统讲解深度学习的基本原理、主流网络结构及其在图像、语音、自然语言处理等领域的应用。");
                course.put("chapters", Arrays.asList(
                        chapter("第一章：深度学习基础", Arrays.asList(
                                lesson("1.1 神经网络原理", "40分钟"),
                                lesson("1.2 激活函数与损失函数", "35分钟"),
                                lesson("1.3 前向与反向传播", "45分钟")
                        )),
                        chapter("第二章：卷积神经网络", Arrays.asList(
                                lesson("2.1 卷积操作", "40分钟"),
                                lesson("2.2 池化与归一化", "35分钟"),
                                lesson("2.3 CNN应用案例", "45分钟")
                        )),
                        chapter("第三章：循环神经网络", Arrays.asList(
                                lesson("3.1 RNN结构", "40分钟"),
                                lesson("3.2 LSTM与GRU", "45分钟"),
                                lesson("3.3 序列建模实践", "40分钟")
                        )),
                        chapter("第四章：优化与正则化", Arrays.asList(
                                lesson("4.1 优化算法", "35分钟"),
                                lesson("4.2 正则化方法", "30分钟"),
                                lesson("4.3 过拟合与欠拟合", "40分钟")
                        )),
                        chapter("第五章：生成模型", Arrays.asList(
                                lesson("5.1 自编码器", "40分钟"),
                                lesson("5.2 生成对抗网络", "45分钟"),
                                lesson("5.3 生成模型应用", "35分钟")
                        )),
                        chapter("第六章：深度学习工程实践", Arrays.asList(
                                lesson("6.1 框架与工具", "30分钟"),
                                lesson("6.2 模型部署", "40分钟"),
                                lesson("6.3 性能优化", "35分钟")
                        )),
                        chapter("第七章：前沿进展与展望", Arrays.asList(
                                lesson("7.1 Transformer模型", "45分钟"),
                                lesson("7.2 多模态学习", "40分钟"),
                                lesson("7.3 未来发展趋势", "30分钟")
                        ))
                ));
                break;
            case 7:
                course.put("title", "算法竞赛实战");
                course.put("instructor", "孙老师");
                course.put("image", baseUrl + "/images/course_acm.jpg");
                course.put("description", "面向ACM/ICPC、蓝桥杯等算法竞赛，系统训练常用算法与数据结构，提升解题能力和竞赛技巧。");
                course.put("chapters", Arrays.asList(
                        chapter("第一章：竞赛基础", Arrays.asList(
                                lesson("1.1 竞赛规则与环境", "30分钟"),
                                lesson("1.2 输入输出技巧", "35分钟"),
                                lesson("1.3 代码风格与调试", "30分钟")
                        )),
                        chapter("第二章：基础算法", Arrays.asList(
                                lesson("2.1 排序与查找", "40分钟"),
                                lesson("2.2 数学与数论", "45分钟"),
                                lesson("2.3 贪心与分治", "40分钟")
                        )),
                        chapter("第三章：数据结构", Arrays.asList(
                                lesson("3.1 栈与队列", "35分钟"),
                                lesson("3.2 链表与树", "40分钟"),
                                lesson("3.3 图与并查集", "45分钟")
                        )),
                        chapter("第四章：动态规划", Arrays.asList(
                                lesson("4.1 线性DP", "40分钟"),
                                lesson("4.2 区间DP", "45分钟"),
                                lesson("4.3 状态压缩DP", "50分钟")
                        )),
                        chapter("第五章：图论算法", Arrays.asList(
                                lesson("5.1 最短路", "40分钟"),
                                lesson("5.2 最小生成树", "45分钟"),
                                lesson("5.3 网络流", "50分钟")
                        )),
                        chapter("第六章：字符串算法", Arrays.asList(
                                lesson("6.1 KMP与Trie树", "40分钟"),
                                lesson("6.2 哈希与AC自动机", "45分钟"),
                                lesson("6.3 字符串匹配实战", "35分钟")
                        )),
                        chapter("第七章：综合训练", Arrays.asList(
                                lesson("7.1 经典题型解析", "50分钟"),
                                lesson("7.2 竞赛策略与心态", "30分钟"),
                                lesson("7.3 模拟赛与总结", "40分钟")
                        ))
                ));
                break;
            case 8:
                course.put("title", "数据结构可视化");
                course.put("instructor", "周老师");
                course.put("image", baseUrl + "/images/course_visual.jpg");
                course.put("description", "通过可视化工具和动画演示，帮助学习者直观理解数据结构的实现与操作。");
                course.put("chapters", Arrays.asList(
                        chapter("第一章：线性表可视化", Arrays.asList(
                                lesson("1.1 顺序表动画演示", "30分钟"),
                                lesson("1.2 链表操作可视化", "35分钟"),
                                lesson("1.3 线性表应用案例", "30分钟")
                        )),
                        chapter("第二章：栈与队列可视化", Arrays.asList(
                                lesson("2.1 栈操作动画", "35分钟"),
                                lesson("2.2 队列操作动画", "30分钟"),
                                lesson("2.3 应用场景演示", "35分钟")
                        )),
                        chapter("第三章：树结构可视化", Arrays.asList(
                                lesson("3.1 二叉树遍历动画", "40分钟"),
                                lesson("3.2 平衡树结构演示", "35分钟"),
                                lesson("3.3 树的应用可视化", "30分钟")
                        )),
                        chapter("第四章：图结构可视化", Arrays.asList(
                                lesson("4.1 图的遍历动画", "40分钟"),
                                lesson("4.2 最短路径演示", "35分钟"),
                                lesson("4.3 图结构应用", "30分钟")
                        )),
                        chapter("第五章：查找算法可视化", Arrays.asList(
                                lesson("5.1 顺序查找动画", "30分钟"),
                                lesson("5.2 二分查找演示", "35分钟"),
                                lesson("5.3 哈希查找可视化", "30分钟")
                        )),
                        chapter("第六章：排序算法可视化", Arrays.asList(
                                lesson("6.1 插入排序动画", "35分钟"),
                                lesson("6.2 归并排序演示", "40分钟"),
                                lesson("6.3 快速排序可视化", "35分钟")
                        )),
                        chapter("第七章：综合案例演示", Arrays.asList(
                                lesson("7.1 结构选择与应用", "40分钟"),
                                lesson("7.2 算法流程可视化", "35分钟"),
                                lesson("7.3 项目实践展示", "30分钟")
                        ))
                ));
                break;
            case 9:
                course.put("title", "算法工程实践");
                course.put("instructor", "吴博士");
                course.put("image", baseUrl + "/images/course_eng.jpg");
                course.put("description", "聚焦算法在工程中的实际应用，包括推荐系统、搜索引擎、智能硬件等场景的算法设计与优化。");
                course.put("chapters", Arrays.asList(
                        chapter("第一章：工程算法基础", Arrays.asList(
                                lesson("1.1 算法工程化流程", "35分钟"),
                                lesson("1.2 代码规范与测试", "30分钟"),
                                lesson("1.3 性能评估方法", "40分钟")
                        )),
                        chapter("第二章：推荐系统算法", Arrays.asList(
                                lesson("2.1 协同过滤算法", "40分钟"),
                                lesson("2.2 内容推荐算法", "35分钟"),
                                lesson("2.3 推荐系统架构", "45分钟")
                        )),
                        chapter("第三章：搜索引擎算法", Arrays.asList(
                                lesson("3.1 信息检索基础", "40分钟"),
                                lesson("3.2 排序与相关性算法", "35分钟"),
                                lesson("3.3 搜索性能优化", "40分钟")
                        )),
                        chapter("第四章：智能硬件算法", Arrays.asList(
                                lesson("4.1 传感器数据处理", "35分钟"),
                                lesson("4.2 边缘计算算法", "40分钟"),
                                lesson("4.3 智能控制策略", "35分钟")
                        )),
                        chapter("第五章：大数据算法实践", Arrays.asList(
                                lesson("5.1 分布式计算", "40分钟"),
                                lesson("5.2 并行算法实现", "35分钟"),
                                lesson("5.3 大数据分析案例", "45分钟")
                        )),
                        chapter("第六章：算法优化与部署", Arrays.asList(
                                lesson("6.1 算法优化技巧", "35分钟"),
                                lesson("6.2 模型压缩与加速", "40分钟"),
                                lesson("6.3 工程部署实践", "45分钟")
                        )),
                        chapter("第七章：综合项目实战", Arrays.asList(
                                lesson("7.1 项目需求分析", "40分钟"),
                                lesson("7.2 项目开发与测试", "50分钟"),
                                lesson("7.3 项目总结与优化", "30分钟")
                        ))
                ));
                break;
            case 10:
                course.put("title", "算法与数据结构面试宝典");
                course.put("instructor", "郑老师");
                course.put("image", baseUrl + "/images/course_interview.jpg");
                course.put("description", "针对IT求职面试，系统梳理常见算法与数据结构面试题及解题思路，助力高效备考。");
                course.put("chapters", Arrays.asList(
                        chapter("第一章：面试基础", Arrays.asList(
                                lesson("1.1 面试流程与技巧", "30分钟"),
                                lesson("1.2 常见考点解析", "35分钟"),
                                lesson("1.3 简历与自我介绍", "30分钟")
                        )),
                        chapter("第二章：数组与字符串", Arrays.asList(
                                lesson("2.1 数组操作题型", "40分钟"),
                                lesson("2.2 字符串处理技巧", "35分钟"),
                                lesson("2.3 高频面试题讲解", "45分钟")
                        )),
                        chapter("第三章：链表与树", Arrays.asList(
                                lesson("3.1 链表常见题型", "40分钟"),
                                lesson("3.2 二叉树遍历", "35分钟"),
                                lesson("3.3 树结构应用", "40分钟")
                        )),
                        chapter("第四章：栈与队列", Arrays.asList(
                                lesson("4.1 栈的应用题", "35分钟"),
                                lesson("4.2 队列与优先队列", "40分钟"),
                                lesson("4.3 题型变式分析", "30分钟")
                        )),
                        chapter("第五章：哈希与查找", Arrays.asList(
                                lesson("5.1 哈希表原理", "40分钟"),
                                lesson("5.2 查找算法题型", "35分钟"),
                                lesson("5.3 高频查找题讲解", "45分钟")
                        )),
                        chapter("第六章：排序算法", Arrays.asList(
                                lesson("6.1 常见排序算法", "40分钟"),
                                lesson("6.2 排序题型分析", "35分钟"),
                                lesson("6.3 排序优化技巧", "30分钟")
                        )),
                        chapter("第七章：综合面试实战", Arrays.asList(
                                lesson("7.1 真题模拟演练", "50分钟"),
                                lesson("7.2 面试心态与应变", "30分钟"),
                                lesson("7.3 经验总结与提升", "40分钟")
                        ))
                ));
                break;
            default:
                course.put("title", "未知课程");
                course.put("instructor", "未知讲师");
                course.put("image", baseUrl + "/images/course_default.jpg");
                course.put("description", "暂无课程简介。");
                course.put("chapters", Collections.emptyList());
        }
        return course;
    }

    private String getBaseUrl(HttpServletRequest request) {
        return request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort();
    }

    private Map<String, Object> chapter(String title, List<Map<String, String>> lessons) {
        Map<String, Object> map = new HashMap<>();
        map.put("title", title);
        map.put("lessons", lessons);
        return map;
    }

    private Map<String, String> lesson(String title, String duration) {
        Map<String, String> map = new HashMap<>();
        map.put("title", title);
        map.put("duration", duration);
        return map;
    }

} 